/* Flower recognition

siftVocabulary.h coded by Huynh Nam in 2014*/

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <stdio.h>
#include <cmath>
#include <vector>
#include <float.h>
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp"

using namespace std;
using namespace cv;

class siftVocabulary {
    private:
		int size_dictionary;
		int size_sample;
		std::vector<KeyPoint> sample_keypoint;
		Mat sample_sift_descriptor;
		Mat dictionary;
public:
	siftVocabulary(int _size, int _size_sample);
	void getSampleOnImage(char *filename, int num_files);
	void getSampleOnTrainingSet(string directory, string file_name_format, int from_file, int to_file);
	void generateDictionary();
	Mat getDictionary();
	int getSizeDictionary();
};